﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogicLayer;
using DataAccessComponents;
using System.Data;
using System.Collections.ObjectModel;

namespace inzWeb
{
    public partial class szczegolyHotel : System.Web.UI.Page
    {
        string id;
        protected void Page_Load(object sender, EventArgs e)
        {
            // Id miasto podane przez querystring
            id = Request.QueryString["idhotel"];
            dgListaTerminowHotele.SortCommand += new DataGridSortCommandEventHandler(dgListaTerminowHotele_SortCommand);
            
            if (!IsPostBack)
            {
                
                uzupenijMiesiace();
                
                //ddlMiesiące.SelectedIndex = DateTime.Now.Month - 1;
                


            }
            int miesiac = ddlMiesiące.SelectedIndex + 1;
            uzupelnijSzczegolyHotelu(id, miesiac);
        }
        private void uzupenijMiesiace()
        {
            string[] miesiace = { "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" };
            ddlMiesiące.DataSource = miesiace;           
            ddlMiesiące.DataBind();
        }

        void Rezerwuj_Click(Object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            
        }

        public void rbTerminHotel_checkedChanged(object sender, EventArgs e)
        {
            RadioButton rb = new RadioButton();
            rb = (RadioButton)sender;
            string rbId = rb.ClientID;
            foreach (DataGridItem item in dgListaTerminowHotele.Items)
            {
                rb = (RadioButton)item.FindControl("rbTerminHotel");
                rb.Checked = false;
                if (rbId == rb.ClientID)
                {
                    rb.Checked = true;
                    
                }

            }
        }

        void dgListaTerminowHotele_SortCommand(object source, DataGridSortCommandEventArgs e)
        {   // Nagłówka do sortowania
            if (ViewState["liczbaKlikniec"] == null)
            {
                ViewState["liczbaKlikniec"] = 1;
            }

            TerminBL terminBL = new TerminBL();

            int idhotel = Convert.ToInt32(id);
            ObservableCollection<Termin> lista = terminBL.pobierzListeDlaHotelu(idhotel);
            
            DataTable dt = new DataTable();

            dt.Columns.Add("id_termin", typeof(int));
            dt.Columns.Add("id_oferta", typeof(int));
            dt.Columns.Add("data_rozpoczecia", typeof(DateTime));
            dt.Columns.Add("ilosc_dni", typeof(int));
            dt.Columns.Add("cena", typeof(Decimal));
            dt.Columns.Add("id_miasta_wylotu", typeof(int));
            dt.Columns.Add("id_miasta_celu", typeof(int));
            dt.Columns.Add("godzina_wylotu_z_celu", typeof(DateTime));
            dt.Columns.Add("godzina_wylotu", typeof(DateTime));
            dt.Columns.Add("czas_lotu", typeof(int));
            dt.Columns.Add("data_zakonczenia", typeof(DateTime));

            foreach (Termin termin in lista)
            {
                DataRow row = dt.NewRow();
                row["id_termin"] = termin.Id_termin;
                row["id_oferta"] = termin.Id_oferta;
                row["data_rozpoczecia"] = termin.Data_rozpoczecia;
                row["ilosc_dni"] = termin.Id_termin;
                row["cena"] = termin.Cena;
                row["id_miasta_wylotu"] = termin.Id_miasta_wylotu;
                row["id_miasta_celu"] = termin.Id_miasta_celu;
                row["godzina_wylotu_z_celu"] = termin.Godzina_wylotu_z_celu;
                row["godzina_wylotu"] = termin.Godzina_wylotu;
                row["czas_lotu"] = termin.Czas_lotu;
                row["data_zakonczenia"] = termin.Data_zakonczenia;

                dt.Rows.Add(row);
            }

            DataView dv = new DataView(dt);
            int liczbaKlikniec = (int)ViewState["liczbaKlikniec"];
            if (liczbaKlikniec % 2 == 0)
            {
                dv.Sort = e.SortExpression + " " + "ASC";
            }
            else
                dv.Sort = e.SortExpression + " " + "DESC";
            liczbaKlikniec++;
            ViewState["liczbaKlikniec"] = liczbaKlikniec;
            dgListaTerminowHotele.DataSource = dv;
            dgListaTerminowHotele.DataBind();
         }

        private void uzupelnijSzczegolyHotelu(string id,int miesiac)
        {
            if (!string.IsNullOrEmpty(id))
            {

                int idhotel = Convert.ToInt32(id);

                HotelBL hotelBL = new HotelBL();
                Hotel hotel = hotelBL.pobierz(idhotel);

                lblTytulSzczegol.Text = hotel.Nazwa;
                lblOpisSkroconySzczegol.Text = hotel.Opis_skrot;
                zdjecieGlowneSzczegol.ImageUrl = "./GetImage.aspx?id=" + hotel.IdzdjecieGlowne;
                lblOpisSzczegol.Text = hotel.Opis;
                
                this.DataBind();

                ZdjecieBL zdjecieBL = new ZdjecieBL();
                dlGaleriaSzczegol.DataSource = zdjecieBL.pobierzListe(hotel.Id_galeria);
                dlGaleriaSzczegol.DataBind();               
                
               // Terminy
                TerminBL terminBL = new TerminBL();
                ObservableCollection<Termin> lista = new ObservableCollection<Termin>();

                foreach (Termin termin in terminBL.pobierzListeDlaHotelu(idhotel))
                {
                    if (termin.Data_rozpoczecia.Month == miesiac && termin.Data_rozpoczecia.Year >= DateTime.Now.Year)
                    {
                        lista.Add(termin);
                    }
                }

                dgListaTerminowHotele.DataSource = lista;

                if (lista.Count > 0)
                {
                    lblKategoriaOpis.Text = ((Termin)lista[0]).Oferta.Kategoria.Nazwa;
                    lblKategoriaOpis.DataBind();
                    lblLinieLotniczeOpis.Text = ((Termin)lista[0]).Oferta.Linielotnicze.Nazwa;
                    dgListaTerminowHotele.DataBind();

                }

            }
        }

        public void dgListaTerminowHotele_page(Object sender,DataGridPageChangedEventArgs e)
        {
            dgListaTerminowHotele.CurrentPageIndex = e.NewPageIndex;
            int miesiac = ddlMiesiące.SelectedIndex + 1;
            uzupelnijSzczegolyHotelu(id,miesiac);
        }

        
    }
}